# todo [feature] software float point number : because stone only has Integer,
# it can provide float point number library
#
#
# todo [feature] 'require' to load library
#
# [bug(fixed)] function call 
# # [problem] 错误的使用了Env#put使得ParamList#evaluate把形式参数设置到了@outer
# [太鸡肋了吧，连函数的返回值都不能赋给变量] 
# right : 
#   fn fuck(x, y, z) { x + y + x }
#   fn fac(n) { if n == 0 { 1 } else { n * fac(n-1) } }
# wrong : 
#   fn fib(n) {
#     if n < 2 { n }
#     else { fib(n-1) + fib(n-2) }
#   }
#
# todo [feature] stoneVM / YARV
# switch to YARV by --YARV=true(--YARV=false is default)
#
# todo [feature] proc
#
# todo [feature] block assign
# such as: ret = if i < j { i } else { j }
#
# todo [feature] Global Env and the Array
# class GlobalEnv {
#   fn self.[](*list) {
#     Array{list}
#   }
# }
#
